﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Grupo2.Dominio;
using Grupo2.Persistencia;

namespace Grupo2.Negocio
{
    public class InscripcionEmpresaService
    {
        // No hay dependencias, utilizamos las DAO ya definidas en forma directa

        // Mapeo de funcionalidades
        public Ofertante RegistrarOfertante(Int32 Id_Ofertante
                                    , String Email
                                    , String Password
                                    , String Ruc
                                    , String Razon_Social
                                    , String Direccion
                                    , String Giro_Negocio
                                    , String Representante_Legal
                                    , String Nombre_Contacto
                                    , String Telefono_Contacto
                                    , String Email_Contacto
                                    )
        {
            // Validación de RUC
            if (null == Ruc || String.Empty.Equals(Ruc))
                throw new Exception("El dato RUC es obligatorio");
            // Validación de RAZON SOCIAL
            if (null == Razon_Social || String.Empty.Equals(Razon_Social))
                throw new Exception("El dato RAZON SOCIAL es obligatorio");
            // Validación de GIRO DEL NEGOCIO
            if (null == Giro_Negocio || String.Empty.Equals(Giro_Negocio))
                throw new Exception("El dato GIRO DEL NEGOCIO es obligatorio");
            // Validación de NOMBRE DEL CONTACTO
            if (null == Nombre_Contacto || String.Empty.Equals(Nombre_Contacto))
                throw new Exception("El dato NOMBRE DEL CONTACTO es obligatorio");
            // Validación de EMAIL DEL CONTACTO
            if (null == Email_Contacto || String.Empty.Equals(Email_Contacto))
                throw new Exception("El dato EMAIL DEL CONTACTO es obligatorio");

            // Generar nueva secuencia para Ofertante
            OfertanteDAO ofertanteDAO = new OfertanteDAO();

            Ofertante ofertante = new Ofertante();
            //ofertante.Id_Ofertante = Convert.ToInt32(ofertanteDAO.ObtenerID());
            ofertante.Id_Ofertante = 1;
            ofertante.Email = Email;
            ofertante.Password = Password;
            ofertante.Ruc = Ruc;
            ofertante.Razon_Social = Razon_Social;
            ofertante.Direccion = Direccion;
            ofertante.Giro_Negocio = Giro_Negocio;
            ofertante.Representante_Legal = Representante_Legal;
            ofertante.Nombre_Contacto = Nombre_Contacto;
            ofertante.Telefono_Contacto = Telefono_Contacto;
            ofertante.Email_Contacto = Email_Contacto;


            Ofertante ofertanteCreado = ofertanteDAO.CrearOfertante(ofertante);
            return ofertanteCreado;
        }

        public Ofertante ModificarOfertante(Int32 Id_Ofertante
                                    , String Email
                                    , String Password
                                    , String Ruc
                                    , String Razon_Social
                                    , String Direccion
                                    , String Giro_Negocio
                                    , String Representante_Legal
                                    , String Nombre_Contacto
                                    , String Telefono_Contacto
                                    , String Email_Contacto
                                    )
        {
            // Validacion de existencia de Ofertante
            OfertanteDAO ofertanteDAO = new OfertanteDAO();
            Ofertante ofertanteExistente = ofertanteDAO.ObtenerOfertante(Id_Ofertante);
            if (null == ofertanteExistente)
                throw new Exception("El Ofertante NO EXISTE...");

            // Validación de RUC
            if (null == Ruc || String.Empty.Equals(Ruc))
                throw new Exception("El dato RUC es obligatorio");
            // Validación de RAZON SOCIAL
            if (null == Razon_Social || String.Empty.Equals(Razon_Social))
                throw new Exception("El dato RAZON SOCIAL es obligatorio");
            // Validación de GIRO DEL NEGOCIO
            if (null == Giro_Negocio || String.Empty.Equals(Giro_Negocio))
                throw new Exception("El dato GIRO DEL NEGOCIO es obligatorio");
            // Validación de NOMBRE DEL CONTACTO
            if (null == Nombre_Contacto || String.Empty.Equals(Nombre_Contacto))
                throw new Exception("El dato NOMBRE DEL CONTACTO es obligatorio");
            // Validación de EMAIL DEL CONTACTO
            if (null == Email_Contacto || String.Empty.Equals(Email_Contacto))
                throw new Exception("El dato EMAIL DEL CONTACTO es obligatorio");

            Ofertante ofertante = new Ofertante();
            ofertante = ofertanteExistente;
            ofertante.Email = Email;
            ofertante.Password = Password;
            ofertante.Ruc = Ruc;
            ofertante.Razon_Social = Razon_Social;
            ofertante.Direccion = Direccion;
            ofertante.Giro_Negocio = Giro_Negocio;
            ofertante.Representante_Legal = Representante_Legal;
            ofertante.Nombre_Contacto = Nombre_Contacto;
            ofertante.Telefono_Contacto = Telefono_Contacto;
            ofertante.Email_Contacto = Email_Contacto;

            Ofertante ofertanteModificado = ofertanteDAO.ModificarOfertante(ofertante);
            return ofertanteModificado;
        }

        public Ofertante EliminarOfertante(Int32 Id_Ofertante)
        {
            // Validacion de existencia de Ofertante
            OfertanteDAO ofertanteDAO = new OfertanteDAO();
            Ofertante ofertanteExistente = ofertanteDAO.ObtenerOfertante(Id_Ofertante);
            if (null == ofertanteExistente)
                throw new Exception("El Ofertante NO EXISTE...");

            Ofertante ofertante = new Ofertante();
            ofertante = ofertanteExistente;

            ofertanteDAO.EliminarOfertante(ofertante.Id_Ofertante);
            return ofertante;
        }

        public Ofertante ListarOfertante(Ofertante ofertante)
        {
            return null;
        }
    }
}